<?php

App::uses('AppController', 'Controller');

class SegurosController extends AppController {

    public $layout = 'hospital';
    public $uses = array('Seguro', 'Colegio', 'MedicamentosPaciente', 'Medicamento','Medicamentosprecio',
        'Examenespaciente', 'Consultasexterna', 'ExcomplementariosPaciente', 'Subclaseslaboratorio', 
        'Excomplementario', 'PacientesSeguro');
    public $helper = array('Fechas');

    public function beforeFilter() {
        parent::beforeFilter();
        $this->Auth->allow();
    }

    /**
     * index method
     *
     * @return void
     */
    public function index() {
        $this->Seguro->recursive = 0;
        $this->set('seguros', $this->paginate());
    }

    public function index2() {
        $seguros = $this->Seguro->find('all', array('recursive' => -1));
        $this->set(compact('seguros'));
    }

    /**
     * view method
     *
     * @throws NotFoundException
     * @param string $id
     * @return void
     */
    public function view($id = null) {
        if (!$this->Seguro->exists($id)) {
            throw new NotFoundException(__('Invalid seguro'));
        }
        $options = array('conditions' => array('Seguro.' . $this->Seguro->primaryKey => $id));
        $this->set('seguro', $this->Seguro->find('first', $options));
    }

    /**
     * add method
     *
     * @return void
     */
    public function add() {
        if ($this->request->is('post')) {
            $this->Seguro->create();
            if ($this->Seguro->save($this->request->data)) {
                $this->Session->setFlash(__('The seguro has been saved'));
                $this->redirect(array('action' => 'index2'));
            } else {
                $this->Session->setFlash(__('The seguro could not be saved. Please, try again.'));
            }
        }
    }

    /**
     * edit method
     *
     * @throws NotFoundException
     * @param string $id
     * @return void
     */
    public function edit($id = null) {
        if (!$this->Seguro->exists($id)) {
            throw new NotFoundException(__('Invalid seguro'));
        }
        if ($this->request->is('post') || $this->request->is('put')) {
            if ($this->Seguro->save($this->request->data)) {
                $this->Session->setFlash(__('The seguro has been saved'));
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash(__('The seguro could not be saved. Please, try again.'));
            }
        } else {
            $options = array('conditions' => array('Seguro.' . $this->Seguro->primaryKey => $id));
            $this->request->data = $this->Seguro->find('first', $options);
        }
    }

    /**
     * delete method
     *
     * @throws NotFoundException
     * @throws MethodNotAllowedException
     * @param string $id
     * @return void
     */
    public function delete($id = null) {
        $this->Seguro->id = $id;
        if (!$this->Seguro->exists()) {
            throw new NotFoundException(__('Invalid seguro'));
        }
        //$this->request->onlyAllow('post', 'delete');
        if ($this->Seguro->delete()) {
            $this->Session->setFlash(__('Seguro deleted'));
            $this->redirect(array('action' => 'index2'));
        }
        $this->Session->setFlash(__('Seguro was not deleted'));
        $this->redirect(array('action' => 'index2'));
    }

    /**
     * form buscar method
     *
     * @throws NotFoundException
     * @throws MethodNotAllowedException
     * @param string $id
     * @return void
     */
    public function formulariobuscarseguro() {
        $seguros = $this->Seguro->find('all', array('recursive' => -1));
        $this->set(compact('seguros'));
    }

    public function ajaxencuentrapacientesseguros() {
        //debug($this->request->data);exit;
        $this->layout = 'ajax';
        $desde = $this->request->data['fechadesde'] . ' 00:00:00';
        $hasta = $this->request->data['fechahasta'] . ' 23:59:59';
        $fecha1 = $this->request->data['fechadesde'];
        $fecha2 = $this->request->data['fechahasta'];
        $seguro = $this->request->data['seguro_id'];
        $colegio = $this->request->data['colegio_id'];

        if ($colegio != 0) {

            $atenciones = $this->Consultasexterna->find('all', array(
                'conditions' => array(
                    'Consultasexterna.colegio_id' => $colegio,
                    'Consultasexterna.seguro' => 'SI',
                    'Consultasexterna.created BETWEEN ? AND ? ' => array($desde, $hasta)
                ),
                'fields' => array(
                    'count( distinct Consultasexterna.id) as cantidad',
                    'Consultasexterna.colegio_id',
                    'Consultasexterna.seguro_id',
                    'Consultasexterna.id',
                    'Seguro.nombre',
                    'Colegio.nombre'),
                'recursive' => 0
                    )
            );
        } else {

            if ($seguro == 1) {
                $atenciones = $this->Consultasexterna->find('all', array(
                    'conditions' => array(
                        'Consultasexterna.seguro' => 'SI',
                        'Consultasexterna.seguro_id' => $seguro,
                        'Consultasexterna.created BETWEEN ? AND ? ' => array($desde, $hasta)
                    ),
                    'fields' => array(
                        'count( distinct Consultasexterna.id) as cantidad',
                        'Consultasexterna.colegio_id',
                        'Consultasexterna.seguro_id',
                        'Consultasexterna.id',
                        'Seguro.nombre',
                        'Colegio.nombre'),
                    'group' => array('Consultasexterna.colegio_id'),
                    'recursive' => 0
                        )
                );
            } else {
                $atenciones = $this->Consultasexterna->find('all', array(
                    'conditions' => array(
                        'Consultasexterna.seguro' => 'SI',
                        'Consultasexterna.seguro_id' => $seguro,
                        'Consultasexterna.created BETWEEN ? AND ? ' => array($desde, $hasta)),
                    'fields' => array(
                        'count( distinct Consultasexterna.consultasexterna_id) as cantidad',
                        'Consultasexterna.colegio_id',
                        'Consultasexterna.seguro_id',
                        'Seguro.nombre',
                        'Colegio.nombre'),
                    'group' => array('Consultasexterna.seguro_id'),
                ));
            }
        }
        //debug($atenciones);exit;
        $this->set(compact('atenciones', 'colegio', 'fecha1', 'fecha2'));
    }

    public function previoreporte($idseguro = null, $idcolegio = null, $desde = null, $hasta = null) {

        $fecha_inicial = $desde;
        $fecha_final = $hasta;
        $desde = $desde . ' 00:00:00';
        $hasta = $hasta . ' 23:59:59';
        $seguro = $this->Seguro->find('first', array('conditions' => array('Seguro.id' => $idseguro)));
        //debug($idcolegio);exit;
        if ($idcolegio != 0) {
            $atenciones = $this->Consultasexterna->find('all', array(
                'conditions' => array(
                    'Consultasexterna.seguro' => 'SI',
                    'Consultasexterna.colegio_id' => $idcolegio,
                    'Consultasexterna.created BETWEEN ? AND ? ' => array($desde, $hasta)),
                'fields' => array(
                    'Paciente.id', 'Paciente.nombres', 'Paciente.ap_paterno', 'Paciente.ap_materno',
                    'Consultasexterna.id', 'Consultasexterna.edad',
                    'Consultasexterna.curso', 'Colegio.nombre',
                    'Consultasexterna.created'),
                'group' => array('Consultasexterna.id'),
                'order' => array('Paciente.ap_paterno ASC', 'Paciente.ap_materno ASC', 'Paciente.nombres ASC')
            ));
        } else {
            if ($idseguro) {
                $atenciones = $this->Consultasexterna->find('all', array(
                    'conditions' => array(
                        'Consultasexterna.seguro' => 'SI',
                        'Consultasexterna.seguro_id' => $idseguro,
                        'Consultasexterna.created BETWEEN ? AND ? ' => array($desde, $hasta)),
                    'fields' => array(
                        'Paciente.id', 'Paciente.nombres', 'Paciente.ap_paterno', 'Paciente.ap_materno',
                        'Consultasexterna.id', 'Consultasexterna.edad',
                        'Consultasexterna.curso', 'Colegio.id', 'Colegio.nombre',
                        'Consultasexterna.created'),
                    'group' => array('Consultasexterna.id'),
                    'order' => array('Paciente.ap_paterno ASC', 'Paciente.ap_materno ASC', 'Paciente.nombres ASC')
                ));
                //debug($atenciones);exit;
            } else {
                $atenciones = $this->Consultasexterna->find('all', array(
                    'conditions' => array(
                        'Consultasexterna.seguro' => 'SI',
                        'Consultasexterna.seguro_id' => $idseguro,
                        'Consultasexterna.created BETWEEN ? AND ? ' => array($desde, $hasta)),
                    'fields' => array(
                        'Consultasexterna.id', 'Consultasexterna.edad',
                        'Consultasexterna.created',
                        'Consultasexterna.id', 'Consultasexterna.edad',
                        'Seguro.nombre', 'Paciente.id',
                        'Paciente.nombres', 'Paciente.ap_paterno', 'Paciente.ap_materno'),
                    'group' => array('Consultasexterna.id'),
                    'order' => array('Paciente.ap_paterno ASC', 'Paciente.ap_materno ASC', 'Paciente.nombres ASC')
                ));
            }
        }
        //debug($atenciones);exit;

        $this->set(compact('nombreseguro', 'fecha_final', 'fecha_inicial', 'atenciones', 'idseguro', 'idcolegio', 'desde', 'hasta'));
    }

    public function ajaxcolegios() {
        $this->layout = 'ajax';
        $colegios = $this->Colegio->find('all', array('recursive' => -1));
        $this->set(compact('colegios'));
    }

    public function editar($idconsulta = null, $idseguro = null, $idcolegio = null, $desde = null, $hasta = null) {
        $consulta = $this->Consultasexterna->find('first', array(
            'conditions'=>array(
                'Consultasexterna.id'=>$idconsulta
                )));
        //debug($consulta);exit;
        $tratamiento = $this->MedicamentosPaciente->find('all', array(
            'conditions' => array(
                'MedicamentosPaciente.consultasexterna_id' => $idconsulta)
        ));
        $laboratorios = $this->Examenespaciente->find('all', array(
            'conditions' => array(
                'Examenespaciente.created BETWEEN ? AND ?' => array($desde, $hasta),
                'Examenespaciente.consultasexterna_id' => $idconsulta
            )
        ));
        $examenesrutina = $this->ExcomplementariosPaciente->find('all', array(
            'conditions' => array(
                'ExcomplementariosPaciente.consultasexterna_id' => $idconsulta
            )
        ));
        $medicamentos = $this->Medicamento->find('all', array(
            'order'=>array('Medicamento.nombre ASC'),
            'recursive' => 0,
        ));
        $listalaboratorios = $this->Subclaseslaboratorio->find('all', array('recursive'=>1));
        //debug($listalaboratorios);exit;
        $listaexamenesexternos = $this->Excomplementario->find('all', array('recursive' => -1));
        $this->set(compact('listalaboratorios', 'listaexamenesexternos', 'medicamentos','tratamiento', 'laboratorios','examenesrutina', 'consulta', 'idconsulta','idseguro' , 'idcolegio' , 'desde', 'hasta'));
    }
      public function eliminareceta($id = null, $idconsulta = null, $medicamento = null, $idseguro= null , $idcolegio= null , $desde= null, $hasta= null, $tipo=null) {
        
          if($tipo == 1){
        if ($this->MedicamentosPaciente->delete($id)) {
            $this->Session->setFlash('El medicamento  ' . $medicamento . ' fue eliminado del tratamiento', 'bueno');
            
        }
        
        }
        if($tipo == 2){
            if ($this->Examenespaciente->delete($id)) {
                $this->Session->setFlash('El laboratorio  ' . $medicamento . ' fue eliminado del tratamiento', 'bueno');
            }
        }
        if($tipo == 3){
           
            if ($this->ExcomplementariosPaciente->delete($id)) {
                $this->Session->setFlash('El examen complementario  ' . $medicamento . ' fue eliminado del tratamiento', 'bueno');
            }      
        }
        $this->redirect(array('action' => 'editar', $idconsulta,$idseguro , $idcolegio , $desde, $hasta));
    }
    public function ajaxmuestra() {
        $this->layout = 'ajax';
        if (!empty($this->request->data)) {
            //debug($this->request->data);exit;
            if (!empty($this->request->data['Consultasexterna']['recomendaciones'])) {
                $this->Consultasexterna->save($this->request->data['Consultasexterna']);
            }
            if (!empty($this->request->data['MedicamentosPaciente']['cantidad']) && !empty($this->request->data['MedicamentosPaciente']['dosis'])) {
                $idConsulta = $this->request->data['MedicamentosPaciente']['consultasexterna_id'];
                $idPaciente = $this->request->data['MedicamentosPaciente']['paciente_id'];
                $this->request->data['MedicamentosPaciente']['user_id'] = $this->Session->read("Auth.User.id");
               
                $this->MedicamentosPaciente->create();
                //debug($this->request->data);exit;
                if($this->request->data['MedicamentosPaciente']['seguro']=='SI'){
                    
                    $datoseguro = $this->PacientesSeguro->find('first', array(
                        'conditions'=>array('PacientesSeguro.paciente_id'=>$idPaciente),
                        'order'=>array('PacientesSeguro.id DESC')
                        ));
                        //debug($datoseguro);die;
                    if(!empty($datoseguro)){
                          $this->request->data['MedicamentosPaciente']['seguro_id'] = $datoseguro['PacientesSeguro']['seguro_id'];
                          $this->request->data['MedicamentosPaciente']['colegio_id'] = $datoseguro['PacientesSeguro']['colegio_id'];
                          $this->request->data['MedicamentosPaciente']['curso'] = $datoseguro['PacientesSeguro']['curso'];
                          $idMedicamento = $this->request->data['MedicamentosPaciente']['medicamento_id'];
                          $idSeguro = $this->request->data['MedicamentosPaciente']['seguro_id'];
                          
                    }
                }
                
            }
            $idconsulta = $this->request->data['MedicamentosPaciente']['consultasexterna_id'];
            $consulta = $this->Consultasexterna->find('first', array(
            'conditions'=>array(
                'Consultasexterna.id'=>$idconsulta
                )));
        //debug($consulta);exit;
        $tratamiento = $this->MedicamentosPaciente->find('all', array(
            'conditions' => array(
                'MedicamentosPaciente.consultasexterna_id' => $idconsulta)
        ));
        
        $laboratorios = $this->Examenespaciente->find('all', array(
            'conditions' => array(
                'Examenespaciente.consultasexterna_id' => $idconsulta
            )
        ));
        $examenesrutina = $this->ExcomplementariosPaciente->find('all', array(
            'conditions' => array(
                'ExcomplementariosPaciente.consultasexterna_id' => $idconsulta
            )
        ));
        $medicamentos = $this->Medicamento->find('all', array(
            'order'=>array('Medicamento.nombre ASC'),
            'recursive' => 0,
        ));
        $listalaboratorios = $this->Subclaseslaboratorio->find('all', array('recursive'=>1));
        //debug($listalaboratorios);exit;
        $listaexamenesexternos = $this->Excomplementario->find('all', array('recursive' => -1));
        
        $this->set(compact('listalaboratorios', 'listaexamenesexternos', 'medicamentos','tratamiento', 'laboratorios','examenesrutina', 'consulta'));
        
        }
    }
      public function ajaxprecio($idMedicamento=null){
          
        $this->layout='ajax';
        
        $precio = $this->Medicamentosprecio->find('first', 
                array('conditions'=>array(
            'Medicamentosprecio.medicamento_id'=>$idMedicamento, 
            //'Medicamentosprecio.seguro_id'=>$seguro
                ), 
                    'recursive'=>-1));
        $this->set(compact('precio'));
       // debug($precio);exit;
    }
    public function ajaxeditaprecio($precionuevo=null, $idMedicamento=null, $seguro = null){
        $this->layout='ajax';
        $precio_anterior = $this->Medicamentosprecio->find('first', array(
            'conditions'=>array(
                'Medicamentosprecio.medicamento_id'=>$idMedicamento, 
                //'Medicamentosprecio.seguro_id'=>$seguro
                ),
            'recursive'=>-1));
        //debug($precio_anterior);exit;
        $data= array('id'=>$precio_anterior['Medicamentosprecio']['id'], 'precio'=>$precionuevo);
        $this->Medicamentosprecio->save($data);
        $this->set(compact('precionuevo'));
    }
}